Computer systems, particularly those operating with a network, often have multiple programs operating concurrently. It is frequently necessary for information to be transferred from one program to another, either within a single processor or across a network. A user must often process information by use of different programs as well as retrieving display information by using multiple programs which are active concurrently within the system. It is therefore important that information be quickly and easily transferred between multiple programs operating within the system. In addition, it is important that the user be able to easily and quickly change and specify the type of information exchanged between the multiple programs.
Windowing software technology is applied where it is important for a user to be able to display and interact with multiple programs which can be running concurrently in a computer system. A "window" is defined to be a portion of a display screen, such as a CRT. The window covers less than the entirety of the screen so that there may be multiple windows on the screen at one time. Typically, the user moves a cursor around the screen by use of an input device, such as a mouse or multiple keys at a keyboard. The cursor can be moved from one window to the next on the screen and, when the cursor is present within one of the windows, the user is placed in communication with the application program which generated that window. This type of windowing "environment" allows a user to access several different application programs easily so that he can accomplish multiple tasks without having to load a new program each time a new task must be performed.
As with other concurrent operating program systems, it is often necessary for a user to transfer information from one windowed program to another. Transferring information between programs is a principal objective of the present invention. The present invention can be well applied within a windowing environment, although such an environment is not necessary for practicing the invention.
There are two conventional techniques for transferring information between programs. The first is termed "cut and paste". This comprises pointing to (selecting) information such as text or data in one window to highlight it and thereby separate it from the remaining information in the window. The user then presses a special button or key which moves the selected information to an area of memory specially designated by the operating system and known as the "paste memory" or "clipboard". The user next moves the cursor to another window which is to receive the information. A "paste button" or command is invoked by the user to retrieve the stored information from the designated memory area and place it at the location of the cursor. Note that all steps of this process are carried out by the user and there is no designation of which of the window programs are information producer programs or information user programs.
A second conventional technique is to establish a programmed connection between two programs, each of which may display information in a window. Both programs must be designed to respond to a predetermined input command that causes information to be shifted from one program to the other. This operation, likewise, may be entirely under user direction and require a user input before it can function. Another disadvantage of this technique is that each communication path between pairs of programs must be programmed into the code of both programs, which creates an inflexible system. With this conventional method, it is difficult to add new communication paths or to change existing ones.
Therefore, there exists a need for a rapid and flexible method of transferring information between multiple application programs which are available concurrently to a user.